Dark Angel

Jenkins部署MacOS Slave实现持续集成(iOS)

次阅读
本文目录
  1. 前言
  2. 一、配置MacOS Slave
    1. 1. 配置Mac电脑。
    2. 2. 创建节点。
    3. 3. 配置节点。
    4. 4. 最后保存。
  3. 二、配置Jenkins系统设置。
    1. 1. 上传证书和描述文件。
    2. 2. 在 Jenkins > 系统管理 > 系统设置(全局设置)中设置:
    3. 3. 在 Jenkins > 系统管理 > Configure Global Security 中配置:
  4. 三、配置iOS项目。
    1. 1. 安装插件。
    2. 2. Jenkins > 新建。
    3. 3. General.
    4. 4. 源码管理。
    5. 5. 构建触发器。
    6. 6. 构建环境。
    7. 7. 构建
      1. 最重要、最重要、最重要:
    8. 8. 构建后操作。
  5. 四、整体测试
    1. 1. 打开Jenkins。
    2. 2. 点击develop_iOS。
    3. 3. 点击Build with Parameters.
    4. 4. 开始构建。
    5. 5. 等待构建完成即可。
  6. 五、总结。

解决Linux服务器上的Jenkins无法构建Xcode工程

前言

由于Linux服务器无法安装Xcode,所以Jenkins无法通过shell来调用xcodebuild、xcrun等命令来构建Xcode工程,因此无法持续集成,敏捷开发。下面介绍一种配置Jenkins节点的方式,来实现Linux上的Jenkins构建Xcode工程,并上传ipa到蒲公英pgyer来进行测试。

一、配置MacOS Slave

Jenkins有个强大的功能,配置Slave(奴隶)服务器,来实现分布式部署构建。具体步骤如下:

1. 配置Mac电脑。

系统偏好设置 > 共享 中开启 远程登录,如下图:

2. 创建节点。

Jenkins > 系统管理 > 管理节点 > 新建节点,输入节点名称,记得勾选 Permanent Agent,点击OK。

3. 配置节点。

其中要保证/User/Shared/Jenkins/目录的权限为ssh链接的用户可读写。

Host是Mac的ip地址,Credentials是ssh登录Mac时需要的账户和密码。可以添加一个

下面的部分很重要

PATH环境变量,需要在Mac上通过

echo $PATH
/opt/iOSOpenDev/bin:/opt/local/bin:/opt/local/sbin:/opt/local/bin:/opt/local/sbin:/opt/local/bin:/opt/local/sbin:/opt/local/bin:/opt/local/sbin:/opt/local/bin:/opt/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/local/bin:/opt/local/sbin/

获取,然后copy过去。

Keychains and Provisioning Profiles路径要填写正确。没有这个选项的安装Keychains and Provisioning Profiles Management插件。

4. 最后保存。

如果看到

即添加Mac Slave成功,且Mac Slave在线。若连不上,请反复确认远程工作目录的权限。

二、配置Jenkins系统设置。

1. 上传证书和描述文件。

Jenkins > 系统管理 > Keychains and Provisioning Profiles Management中上传打包用的证书和描述文件。如下图:

保存。

2. 在 Jenkins > 系统管理 > 系统设置(全局设置)中设置:

很关键。Keychain的路径和密码需要填写Mac中登录用户的密码。

3. 在 Jenkins > 系统管理 > Configure Global Security 中配置:

开启Safe HTML。

三、配置iOS项目。

1. 安装插件。

安装 build-name-setterdescription setter plugin插件。

2. Jenkins > 新建

3. General.

这里添加了参数化构建过程,为了在每次Build时,可以填写更新说明,所以这里天添加了名为News的参数,当用户构建时填写了内容,可以在之后的脚本中通过${News}来获取News的值。

这里指定Mac Slave服务器作为构建Xcode工程的Slave服务器,Xcode打包构建全部交给这个节点(Slave服务器)来完成。

4. 源码管理。

这里填写本地或者远程的代码仓库(如gitlab或者git)。下面的Branch填写指定分支。

5. 构建触发器。

这里暂时不设置,设置了可以自动化测试,和其他脚本配合使用。

6. 构建环境。

把之前上传的证书和描述文件添加上。

设置Build名称,这里添加了自定义名称。注意,高级里面只勾选第一个,不要勾选 Set build name after build ends,否则会报错。

7. 构建

这里使用的脚本。

export LANG="en_US.UTF-8"

security -v unlock-keychain -p "yourpassword"

ipa_name="URWork_iOS_beta"
build_path="${WORKSPACE}/build/"
fastlane gym --workspace URWorkClient.xcworkspace --scheme URWorkClient --clean --configuration Beta --export_method ad-hoc --output_name ${ipa_name} --output_directory ${build_path}

curl -F "file=@${build_path}${ipa_name}.ipa" \
-F "uKey=yourUKey" \
-F "_api_key=yourApiKey" \
-F "updateDescription=${News}" \
https://www.pgyer.com/apiv1/app/upload

最重要、最重要、最重要:

Linux服务器上的Jenkins调用Mac Slave时,是通过之前设置的SSH登录的方式,而Apple为了安全,在ssh登录时,是不允许读取Keychains(钥匙串)的,所以 security -v unlock-keychain -p "yourpassword"这行命令就很重要了。在构建打包前,先解锁Keychains。

当然这里 fastlane 已经提前通过Homebrew安装好了,这里不再赘述。

整体脚本的流程是,先解锁Keychain,然后用fastlane快速打包,最后上传到蒲公英平台,等待测试。

8. 构建后操作。

附代码:

<h3>更新说明:</h3><p>${News}</p><a href="http://www.pgyer.com/urwork_ios" style="display:block;margin:10px 0px;" target="_blank">点击跳转到下载页</a></br><img src="http://www.pgyer.com/app/qrcode/urwork_ios">

构建完成后,把之前用户输入的更新说明以及蒲公英下载地址二维码通通显示在Build Description中。

四、整体测试

1. 打开Jenkins。

2. 点击develop_iOS。

3. 点击Build with Parameters.

4. 开始构建。

5. 等待构建完成即可。

这里也可以查看构建进度:点击最新的一次构建

点击Console Output

在这里可以查看一些日志,如果出错了,也可以在这里查询。

五、总结。

使用Jenkins打包Xcode工程整体过程很曲折,坑很多,按照这些来,可能还会遇到一些问题,附上一些链接,以供参考。

Dark Angel

iOS界的低调探索者

 
Powered By Hexo